Bionic Commando ROM Hacking

Last Updated: 2005/09/12

Compiled by: TheAlmightyGuru


Table of Contents

1.0 Document Information
    1.1 What's New
    1.2 Version History
    1.3 The Purpose of This Document
    1.4 Document Sources
    1.5 How to Help
2.0 Full ROM Details
3.0 How Data is Stored
    3.1 How Palettes are Handled
    3.2 How Maps are Handled
    3.3 How Sprites are Handled
4.0 Data Tables
5.0 Most Wanted Information


1.0 Document Information

Welcome to the Bionic Commando ROM Hacking Document. This document will provide you with all the information about the internal workings of the Bionic Commando and Top Secret ROMs.


What's New

Version 1.1 - Added an enemy listing, and a large amount of decompiled code. Check the editor for a new palette editor!


Version History

1.1 - Enemy listing, lots of decompiled asm.
1.0 - Initial release


The Purpose of This Document

This document has been compiled in order to allow fans of the Bionic Commando and Top Secret the ability to alter and adjust the game in order to improve, expand, and continue the legacy of the game. ROM hacking, although painfully time consuming, can be a rewarding experience which we would like to share with the rest of the gaming community. This document gives much of the nessesary information to create game editors. For those of you who have never hacked before, you'll soon realize that the rush you feel when you find out something new in a ROM is quite euphoric.


Document Sources

Fans of Bionic Commando and Top Secret have been the backbone for gathering information for this document. The following people have contributed.

Alias

Name

Web Site

Matrixz

.

geocities.com/matrixz15

Graou

.

.

TheAlmightyGuru

Dean Tersigni

thealmightyguru.com


How to Help

Because of the difficulty in hacking ROMs, we're always on the look out for fresh minds willing to figure out new information. If you're already familier with ROM hacking take a look at section 5.0, Most Wanted Information. This will show you game information that we're looking for. Of course, if you want to look for other things, feel free. The more we know about the game, the better.

If you've never hacked a ROM before there are many documents that can teach you the basics of hacking a ROM file.


2.0 Full ROM Details

NOTE: Because of game differences, many of these offsets don't work in Top Secret.

00000-0000F - NES Header

Bank 0 (00010-0400F)

00010-000EF - Screen Usage Pointer for each Room

Each Room is built up of 8x8-structure screens, and there are data for where in the rom to load screens for use in each room. Each Screen Usage Pointer is 16-bit refering to where to start reading Screen Usage Data. These 16-bit pointers are in real NES memory space adresses, to get the rom adress, subtract $80 from the high byte, and add $10 because of the NES header.

000F0-004B7 - 16-bit Screen Usage Data

In the room's Screen Usage Data, each 2 byte couple points to where in the ROM to pick Screen Data for each Screen in the Room. To get the actual ROM adress, do the same as above, subtract $8000 and add $10. For the info, if a pointer's value is above $BFFF, the rom will switch to 16k bank #1, subtracting $40 from the high byte, and using that as the pointer. If you're not into asm, dont worry about it. If both bytes are $FF, it means to stop setting up the screen queue. Not sure if there's actually any limit for how many screens you can use in a room.

004B8-0060F - ???
 This stuff remains a mystery. It's not asm, it seems more like a piece of
 half-compiled source code, ready to be assembled into nes binary.
 Check it out and feed your imagination.

00610-0060F - Screen Data
 Readen from based on $F0-4B7. Very simple data.
 Each byte defines wich 32x32-pixel structures used to fill up one Screen.
 Each room has a different set of structures.
 The structure's properties is defined in the Structure Data.

Bank 1 (04010-0800F)

Misc Map room chunk layouts 04916 - Comm Room 05B98 - Comm Screen 05C18 - Neutral Zone Room 06010-06011 - Pointer to "Palette Pointer for Each Room" 06012-060F1 - CHR Load Data Pointer for Each Room In this case, subtract 4 from the first nibble and add $10 to get correct adress. 060F2-07199 - Tile Load Data Each structure in a screen is built up of 4 blocks. A TileBlock is a 16x16 pixel tile that uses 4 tiles in the Pattern Table. Each tile load data chunk uses 80 bytes. 64 of these dectermines where in a ROM bank to load the 4 tiles for each TileBlock (4 tiles in the Pattern Table), and 16 additional bytes with 4-bit data to select the $4000 byte ROM-bank to load tiles from, and hit bits let's you flip the TileBlock Horizontally. 0-3F: CHR Pointers for each TileBlock Each byte points to a 4-tile chunk (for a TileBlock) in the ROM bank. 40-5F: 4-bit effect/bank data for each TileBlock 4-bit effect data: -HBB || |+$4000 BG-CHR Bank +Horizontal Flip Flag If the Flip Flag is set, the whole TileBlock (as a whole 16x16 tile) is turned Horizontal at load. The two last bits, bit 3 and 4, makes an 2-bit value telling wich $4000 bank in the CHR to load from. So, one can say that the whole CHR Pointer to a TileBlock is 10-bit like this: DDPPPPPPPP Where DD is the 2bit CHR Bank and PPPPPPPP is the other CHR Pointer data Here's a formula to calculate the Tileblock CHR's offset in the ROM: $ROMAddr = ($10010 + ([BG-CHR Bank] * $4000) + ([CHR_Pointer] * $40)) 0719A-07279 - Palette Pointer for Each Room Subtract 4 from first nybb and add $10 to get the address. 0727A-0790F - Room Palette Data NOTE: Palette data has both BG and Sprite Palettes for each room. ($20 bytes) The background color is defined by the 16th byte (first byte of the Sprite Palettes) 07910-0800F - Introduction scene ASM

Bank 2 (08010-0C00F)

08010-08011 - Offset of "Structure Data Pointer for Each Level" 08012-081D1 - 4-byte Screen Layout Data for each Room Each room has 4 bytes of data here. The two first is actually yet another 16-bit pointer, pointing where to read the rooms Screen Layout. The other two i'm not sure of, maybe they have something with the rooms screen size to do.. at least it has something with the layout of screens to do. 081D2-084D8 - Screen Layout Presets "Screen Usage Data" tells where in the ROM to pick up the Screen Data, this data actually has the order of those loaded screens. Each screen can be used several times also. One byte for each screen. 084D9-085B8 - Structure Data Pointer for Each Room 085B9-0880F - ??? More seemingly unused data.

Bank 3 (0C010-1000F)

08810-0EC0F - Structure Data There are 256 structures read for one Room, and each of them has 7 bytes. Structure data is banked with $800 bytes for each Room. This data is laid out in 7 and 7 bytes, so $700 bytes is used, the last $100 bytes is filled with 0. 0: Block0 4-tile start offset 1: Block1 4-tile start offset 2: Block2 4-tile start offset 3: Block3 4-tile start offset 4: Structure Palette Attributes 5: Block 0 and 1 4bit block type 6: Block 2 and 3 4bit block type 0EC10 - Some ASM 0ED7B - Enemy Data Pointer for each Room (Yay! :D) 0EE5B-0F6D5 - Enemy Data Enemy Data goes like this for each enemy: 0: Enemy ID (See Enemy Table for full list) 1: X Position 2: Screen X 3: Y Position 4: Screen Y If byte 0 is $FF it means end of room's enemy data, else more enemies is initialized. 0F6D6-0F6DF - Empty $FF's 0F6E0-0F7BF - Room Special Event Data pointers 0F7C0 - Room Special Event Data This has to be figured out by time. The first byte seems to alter the frequency of the event, second byte; the event ID. 0F8F7 - Room Enemy CHR Load Data Pointers 0F9DB - Room Enemy CHR Load Data 0FBC5 - Sprite to PPU loading tables ex: 0080 00 00 9D 308A ... | | | |_pointer to $10A30 (10A40 in Rom) | | |_ stop at 9D in PPU ? | |_Start filling PPU from Line 0 |_pointer to $10000 (10010 in Rom) Enemy data starts at $EE5B (rom)

Bank 4-9 (10010-2800F)

10010-27FFF - Main CHR Data

Bank A (28010-2C00F)

Ego sprite pointers 28010 - $8A 83 - Pulling up on a swing 28012 - $4B 80 - Walking 28014 - $71 82 - Ducking 28016 - $FD 81 - Arm Up 28018 - $F5 80 - Arm Straight 2801A - $71 82 - Arm Duck 2801C - $71 81 - Arm Normal 2801E - $1B 82 - Hanging after swing 28020 - $DC 83 - Climbing up 28022 - $71 82 - Climbing Object Pointers start around 284B3 Pointer structure is, 1 byte # of pieces, 4 bytes of object tile repeating for number of pieces. Number of pieces 1 byte ... H Mirror Tile offset 1 byte (+20871) | V Mirror X offset 1 byte | | Priority Y offset 1 byte | | | ??? Palette Effects 1 byte 0:0:0:000 00 ------- Effects Byte 284B3 - Bullet / Flare 284B8 - Rocket 284C9 - Circle? 284CE - ??? 284DF - Enemy Soldier Idle 2850B - Enemy Soldier Walking Frame 1 28535 - Enemy Soldier Walking Frame 2 ... 2A629 - $01 09 - Bullet canister tile pointer 2A62B - $FC - Bullet Offset Y 2A62C - $FC - Bullet Offset X 2A62D - $01 - Bullet Palette 2A62E - Parachute package 2BB70 - Some Code, unknown usage

Bank B (2C010-3000F)

Dialogue (2C136-2E78F) Dialogue Layout: Portrait (1 byte), Length of text (1 byte), Text Portrait Byte breakdown Effects Row? | Starting column (0: 13, 1: 5) | | Type (0: Conversation, 1: Communicator) | | | Question Flag (0: None, 1: Choice) | | | | Portrait (0-F, See portrait table) | | | | | 0:0:0:0:0000 2C138 - PLEASE INSTRUCT US. 2C14D - DESCEND TRANSFER 2C15F - THIS IS AREA 2C183 - THIS IS LADD,OUR MISSION AC-COMPLISHED. SUPER JOE IS SAFE. WE ARE RETURNING NOW. 2C1F3 - OK.WE'LL MOVE. 2C205 - MEET WITH ENEMIES AND DESCEND. 2C22F - THIS IS MA-1. I'VE BEEN WAITING FOR YOU.MANY OF OUR AGENTS HAVE ALREADY INFILTRATED THE SECTORS YOU WILL BE TRAVELLING. TO CONTACT THEM YOU MUST FIN A COMMUNICATION ROOM. YOUR SUCCESS DEPENDS ON STAY 2C321 - INT IN TOUCH. YOU SHOULD BE ABLE TO WIRETAP AND INTERCEPT IMPORTANT INFOR-MATION. IGNORE ALL DANGERS AND PROCEED TO THE OPEN DOOR. WE'LL CONTACT YOU LATER. 2C3D3 - COMMANDER,BEWARE OF THE ELEVATOR. 2C3F5 - NOW WE HAVE YOU. 2C407 - AREA 4 IS AN ANSENAL. MAYBE WE CAN FIND GOOD WEAPON WE CAN USE. 2C454 - SECOND BATTALL- ION IS HEADING TOWARDS AREA 4. 2C485 - HEY,IF YOU'RE GOINT TO AREA 4,DON'T FORGET TO TAKE A FLARE GUN WITH YOU. 2C4CF - SO,YOU THINK YOU CAN DESTROY THE MAIN SYSTEM? YOU HAVE NO CHANCE! 2C519 - SUPER JOE? I'M SORRY,BUT I DON'T KNOW ANY-ONE NAMED SUPER JOE. 2C55F - WELCOME, MY FRIEND. WE'VE PREPARED SOME FLARE BOMBS FOR YOU. YOU WILL NEED THEM IN AREA 4. PUSH START TO USE THEM. 2C5F6 - WHAT ARE YOU DOING HERE? I'LL TAKE CARE OF YOU. 2C62F - THIS IS M-8. USE THIS COMMUNICATOR IN AREAS 1,4 AND 5. WE HAD TO HIDE THE OTHER 3 WHICH YOU MUST FIND. 2C6A6 - HE'S TOO STRONG FOR US. 2C6BF - TRY TO GET BEHIND HIM. 2C6DC - YOU'RE A FOOL IF YOU THINK I'LL LET YOU HAVE ANY WEAPONS. PREPARE TO MEET YOUR DOOM! 2C738 - WE'VE LOCATED JOE! HE's AT P.O.W. CAMP IN AREA 7. PLEASE HURRY. 2C786 - -HERE'S ANOTHER COMMUNICATOR FOR YOU. HURRY, TAKE IT. 2C7C7 - OUT OF THE WAY! HERE COMES THE LEADER OF THE IMPERIAL FORCE. MAKE WAY FOR MR.KILLT. 2C822 - FF BATALLION, A DOG OF THE FEDERATION! I'LL TEACH THEM NOT TO MESS WITH US. IF THEY DON'T WANT TO SHORTEN THEIR LIVES, THEY'D BETTER BE QUIET! 2C8CD - THIS IS M-5. WE HAVE LOCATED THE UNDERGROUND PASSAGE WHICH IS NOT IN THE MAP. I THINK WE HAVE FOUND SOMETHING. 2C93F - AAA***WHO IS AWAKENING ME? 2C971 - ARE YOU FROM THE FEDERATION? I'M A SPY FOR THE FEDERATION. I JUST SAW THAT JOE WAS TAKEN AWAY. THEY HEADED TOWARDS AREA 8. 2C9F2 - NO.5,IS THE ROCKET LAUNCHER ALL RIGHT? 2CA1E - YEAH,IT'S FINE. 2CA30 - BATTLE HAS ENDED AND WE HAVE A NEW HERO NOW. I WAS FEELING DIFFERENT AS I RECEIVED THE BLESSINGS FROM COMRADES. 2CAAB - NOW,SOM MUCH TIME HAS ELAPSED AND I'M OLD NOW, I THINK IT'S TIME FOR ME TO TELL YOU THE WHOLE STORY. I HOPE THIS STORY WILL BE TOLD FOR A LONG TIME*** 2CB59 - PI PI PI*** WE HAVE FOUND AN INTRUDER. WE ARE GOING TO ATTACK. 2CBA2 - WELCOME. THERE'S b COMMUNICATOR INSIDE. 2CBDB - DON'T BE HASTY. ADVANCE WITH CAUTION. 2CC05 - GET THE HECK OUT OF HERE YOU NERD! 2CC2C - IF YOU HAVE A WIDE CANNON AND ROCKET LAUNCHER,GO TOWARDS AREAS 3 AND 6. 2CC7C - EXCUSE ME,WHERE IS THE GARBAGE DUMP? 2CCA3 - YOU IMBECIL, HOW LONG HAVE YOU BEEN IN THE FORCE! IT'S IN AREA 9. KEEP IT IN MIND. 2CD05 - ATTACK!! LET'S SHOW WHAT THE 2ND PLATOON CAN DO! 2CD3E - THE EMPIRE IS TRYING TO ACCOM-PLISH WHAT THE BADDS' COULDN'T DO. HOWEVER THEY CANNOT COMPLETE THIS PROJECT BECAUSE THE PERSON WITH THE KEY KNOWLEDGE IS DEAD. HIS NAME IS 2CE00 - I HAVE GIVEN A SPECIAL MACHINE-GUN TO A MAN CALLED DESTROYER-# IN AREA 18. YOU SHOULD USE THAT GUN. 2CE7B - FOR THE REVIVAL DEVICE. MASTER-D WILL NEVER RISE AGAIN. NOW,IT'S YOU TURN TO DIE*** UH? WHAT!? AYHH*** 2CF04 - THIS IS A NEUTRAL AREA. ALL ACTS OF HOSTILITIES ARE PROHIBITED IN THIS AREA. IF VIOLATED,YOU WILL BE ATTACKED. 2CF8F - I CANNOT LET YOU GO THROUGH WITH-OUT A PERMIT. 2CFCC - YOU DON'T HAVE ENOUGH POWER. 2CFEB - YOU WANT,I'LL SHOW YOU THE HORROR OF THE ALBATROS! 2D026 - OK. WE ARE GOING TO OPEN THE DOOR OF THE BOSS'S ROOM. 2D05D - YOU TRANSPORTED JOE? 2D073 - YEAH,OVER TO DISPOSAL AREA. HEROES ALWAYS LOOK GOOD. 2D0AF - I'M CAPTAIN MACK OF THE IMPERIAL FORCE. HA*HA*HA*** FOR YOU. YOU WANT TO COM INTO ROOM IN THE BACK? (Where is this from?!) 2D126 - YOU'VE COME VERY FAR BUT YOU'RE NOT GOING ANY-WHERE FROM HERE. PAY YOUR DUES NOW. 2D17C - IS THAT SO, THAT THAT,S VERY DISAPPOINTING. 2D1AD - STAFF CHARA-DESIGNE HOTARU*B TERUKUN JUNCHAN GAMEREON HAIHOO*K 2D25E - I HAVE c COMMUNICATOR YOU WANT. 2D285 - GO AHEAD,SHOOT ME! 2D29A - c CAN BE VERY USEFUL IN AREAS 7 AND 9. 2D2CA - THIS IS SUPER JOE*** CAN SOMEONE HEAR ME? WHERE AM I*** SOUNDS LIKE NEAR THE OCEAN BUT I CANNOT SEE ANY-THING. 2D352 - AREA 9 LOOKS LIKE THE DISPOSAL AREA. JOE MUST HAVE BEEN TAKEN THERE. PLEASE HURRY. 2D3B3 - COMMANDER,I CANNOT OPEN THIS DOOR. 2D3DA - I TOLD YOU TO MEMORIZE THE NUMBER, YOU IDIOT! 2D415 - IT' TOO EARLY TO FEEL SAFE. I'LL KILL YOU HERE. 2D44C - THIS IS M-2. WE'VE CAPTURED THE ENEMY. I WANT TO KNOW ABOUT THE UNDER-GROUND PATH BUT I DON'T KNOW WHERE TO START. WOULD YOU PLEASE COME TO AREA 7? 2D4EE - THERE'S ONE MORE WEAPON THAT CAN DESTROY THE WALLS. 2D526 - YOUR EFFORT IS WASTED. WE'VE JUST TRANSFERED JOE TO ANOTHER LOCATION. 2D581 - WE WERE WAITING FOR YOU. PLEASE COME IN. 2D5B3 - OH,WE'VE GOT A LITTLE BOY NOW? 2D5D5 - OUCH,IT HURTS, YOU IDIOT! (I'm assuming this is when you hit the guard in TS, but didn't make it into BC) 2D5F1 - OK,OK,I'LL TALK. UNDERGROUND PATHS RUN BE-TWEEN AREAS 14 AND 17,AND 15 AND 18. 2D64A - HOW COULD YOU DO SUCH A CRUEL THING! (I'm assuming this is when you shoot the guard in TS, but didn't make it into BC) 2D675 - SO,YOU'VE FINALLY COME. JOE IS HERE, BUT YOU'RE GOING TO DIE HERE. 2D6C3 - I AM DESTROYER-1. DO YOU HAVE NEED FOR A MACHINEGUN? 2D713 - I AM DESTROYER-2. DO YOU HAVE NEED FOR A MACHINEGUN? 2D760 - I AM DESTROYER-3. DO YOU HAVE NEED FOR A MACHINEGUN? 2D7AD - I HAVE IT IN MY ROOM. (Where is this from?!) 2D7C4 - OH YES,SOMEONE JUST ASKED ME TO TELL YOU THAT d IS IN TOWN LOCATED BETWEEN THOSE MOUNTAINS. DO YOU KNOW WHAT IT MEANS? 2D83F - YOU'RE MY 100th OPPONENT. I'LL TAKE GOOD CARE OF YOU. 2D880 - IF YOU CANNOT ADVANCE ON THE FLOOR,TRY CEILING. (Where is this from?!) 2D8BA - PROGRAM ICHIROU TWILIGHT OKI*CHAN WINDY MUSIC GONDAMIN 2D964 - THIS IS M-8. WE'VE BUILT A NEWLY DEVELOPED BAZOOKA. PLEASE OBTAIN IT FROM A MAN NAMED HAL. 2D9D0 - BLOW UP! WE WANT TO BLOW UP THIS AREA. 2D9FF - BUT WE HAVE NO BOMBS. 2DA17 - I AM HAL. I'M IN FRONT OF AREA 12 NOW. I CANNOT ENTER UNLESS YOU BLOW UP AREAS 10 AND 11,SO PLEASE DO IT FAST. BAZOOKA? YES,I HAVE IT. DON'T WORRY ABOUT ANYTHING. LET ME HANDLE THE REST. 2DAF2 - NO. HAL HAS THE BAZOOKA. 2DB0C - IT'S TOO EARLY TO FEEL SAFE. I'LL KILL YOU HERE. 2DB43 - THIS IS SUPER JOE. THIS AREA IS DIVIDED BY 2 BARRIERS. IN ORDER TO BREAK THE BARRIERS,YOU SHOULD BREAK THE POWER SYSTEM. FIND THE POWER SYSTEM. 2DBFE - WHAT IS GOING ON? (Where is this from?!) 2DC13 - THIS IS JOE. I'M GOING TO DESTROY THE POWER SOURCE OF THE BASE. DEFEAT THE LEADER AND GET OUT! 2DC89 - IT'S JOE,SUPER JOE IS COMING! 2DCA9 - ANSWER ME, NO.5! 2DCBB - OH? THE KID WHO WAS HERE BEFORE. I NEVER THOUGHT I'D SEE YOU HERE. BUT YOU'RE TOO LATE. THE ALBATROS HAS BEGUN TO MOVE. NOT NECESSARY TO WAIT FOR MASTER-D TO REVIVE. I'VE JUST CUT OFF THE SWITCH 2DDAD - YOU WOKE ME FROM A LONG SLEEP. NOW,I HAVE NO MORE USE FOR YOU. I'LL TAKE OVER YOUR ARMY AND RULE THE WORLD. WHAT,YOU'RE GOING TO FIGHT AGAINST ME? YOU DAMN FOOL. IF THAT'S WHAT 2DE7F - I'M HAL.MASTER-D IS***LEAVING. I WON'T LAST LONG. I TAKE THIS BAZOOKA. GET HIM! TH***THERE IS A CHOPPER DOWN HERE. AIM AT THE COCK-PIT AS YOU JUMP. YOU CAN DO IT! 2DF4F - YOUR NUMBER'S UP! MONSTER! 2DF75 - THIS BASE WILL EXPLOD IN 60 SECONDS. EVACUATE RIGHT AWAY. 2DFBC - MR.JOE. I'VE COME TO RESCUE YOU. 2DFE9 - THANK YOU. I'M SORRY TO CAUSE SO MUCH TROUBLE CAPTAIN,SOME-THING TERRIBLE IS GOING TO HAPPEN. REMEMBER THERE WAS A PLAN IN THE BADDS' SE-CRET DOCUMENTS' ABOUT BUILDING A HUGE LASER CANNON. 2E0DB - MASTER-D. TO FINISH THE PROJECT,KILLT IS TRYING TO RESURRECT HIM BUT HAS BEEN UNABLE TO DO SO.CAPTAIN,WE MUST STOP HIM BEFORE THIS PROJECT GETS TOO BIG. I'M GOING TO AREA 12 NOW. CAN YOU FIGHT WITH ME? 2E1C8 - PLANNING HATCHAN SPECIAL THANKS MR.FF 2E232 - GOOD O1 2 3 4 5 6 7 8 9 0 7NO. IS INCORRECT. (Where is this from?!) 2E25F - I'LL TALK ABOUT THE PERSON I MET WHEN I WAS YOUNG*** 2E29A - COMMUNI- WIRE- CATE TAPPING 2E2BB - IN 198X WE'VE FOUND THE BADDS' TOP SECRET MATERIAL CALLED ALBATROS WHICH WAS NEVER PUT INTO PRACTICE. 2E32B - IMPERIAL FORCE'S GENERALISSIMO KILLT HAS SEEN THE PLAN,AND DECIDED TO EXECUTE THE PLAN HIMSELF. 2E395 - THE FEDERATION TRIED TO STOP HIS ATTEMPT BY SENDING OUR HERO SUPER JOE. BUT LOST CONTACT WITH HIM. ONE BRAVE WARRIOR WAS SENT WITH A SPECIAL MISSION*** TO RESCUE SUPER JOE. THE STORY BEGINS*** 2E489 - YES NO 2E494 - WHAT? HIM? HE IS DANGEROUS. YOU MUST GET IT BACK! 2E4CB - IS JOE STILL INSIDE? 2E4E4 - CAPTAIN,IT'S FROM HEAD-QUARTERS. 2E50F - THE COMMAND IS AS FOLLOWS*** ENTER INTO THE ENEMY AREA. RESCUE SUPER JOE WHILE STAYING IN TOUCH WITH AGENTS. THERE ARE MANY AGENTS IN AREA 1 NOW. FIRST,GO SEE THEM. WE RELY ON YOU. 2E5F0 - WE'VE OBTAINED 2E612 - WHAT HAPPENED TO THE CAPTAIN? WE CANNOT WAIT ANY LONGER. WE ARE GOING TO ESCAPE NOW! 2E66F - PLEASE WAIT JUST LITTLE LONGER*** HEY,WHAT'S THAT! 2E73D - GENERALISSIMO KILLT HAS SEEN THE PLAN,AND DECIDED TO EXECUTE THE PLAN HIMSELF 2E810-2ED70 - ??? 2E81D - Room Wierd Data Pointers (messes up screens) Door Targets to Map (2EBB3-2ED6F) Each Map has 4 possible door targets 2EBB3 - $28 47 00 00 - Area 1 Exterior (Comm, 2Interior) 2EBB7 - $48 00 00 00 - Area 2 Exterior (2Interior) 2EBBB - $49 00 00 00 - Area 3 Exterior (2Interior) 2EBBF - $2B 18 00 00 - Area 4 (Comm, Boss) ... Door Targets to Door (2ED73-2EF2F) Each Door targets a door number to the previous map pointer. 2ED73 - Area 1, door 1 2ED74 - Area 1, door 2 2ED75 - Area 1, door 3 2ED76 - Area 1, door 4 2EDA3 - Area 13, door 1 2EDA4 - Area 13, door 2 2EDA3 - Area 13, door 3 2EDA4 - Area 13, door 4 ... 2EF30 - $00 - Unused? 2EF30 - $00 - Unused? 2EF32 - $00 - Unused? Map Music (See sound chart) 2EF33 - $03 - Area 1 (Exterior) 2EF34 - $03 - Area 2 (Exterior) 2EF35 - $03 - Area 3 (Exterior) 2EF36 - $03 - Area 4 2EF37 - $02 - Area 5 (Section 1) 2EF38 - $02 - Area 6 (Section 2) 2EF39 - Area 7 2EF3A - Area 8 (Section 1) 2EF3B - Area 9 2EF3C - Area 10 2EF3D - Area 11 2EF3E - Area 12 (Exterior) 2EF3F - Area 13 2EF40 - Area 14 2EF41 - Area 15 2EF42 - Area 16 2EF43 - Area 17 2EF44 - Area 18 2EF45 - Area 19 2EF46 - Cliff combat 2EF47 - Marsh combat 2EF48 - Underground Passage 2EF49 - Area 1 Boss 2EF4A - Area 2 Boss 2EF4B - Area 4 Boss 2EF4C - Area 3 Boss 2EF4D - Area 6 Boss 2EF4E - Area 7 Boss 2EF4F - Area 9 Boss 2EF50 - Area 5 Boss 2EF51 - Area 11 Boss 2EF52 - Area 10 Boss 2EF53 - Area 8 Boss 2EF54 - Area 12 Cyberboss 2EF55 - ? Unused Boss 2EF56 - ? Unused Boss (1) 2EF57 - ? Unused Boss (2) 2EF58 - ? Unused Boss (3) 2EF59 - Area 8 Cannon Passage 2EF5A - Area 8 Passage With Soldier 2EF5B - Com. Room 1 (Area 1 - Exterior) 2EF5C - Com. Room 2 (Area 1 - Interior) 2EF5D - Com. Room 3 2EF5E - Com. Room 4 2EF5F - Com. Room 5 2EF60 - Com. Room 6 2EF61 - Com. Room 7 2EF62 - Com. Room 8 2EF63 - Com. Room 9 2EF64 - Com. Room 10 2EF65 - Com. Room 11 2EF66 - Com. Room 12 2EF67 - Com. Room 13 2EF68 - Com. Room 14 2EF69 - Com. Room 15 2EF6A - Neutral Area Room 13-1 (1x Bullet) 2EF6B - Neutral Area Room 13-2 (Flares) 2EF6C - Neutral Area Room 14-1 (Gamma Communicator) 2EF6D - Neutral Area Room 14-2 (10x Bullets) 2EF6E - Neutral Area Room 15-1 (Extra Life) 2EF6F - Neutral Area Room 15-2 (Delta Communicator) 2EF70 - Neutral Area Room 16-1 (Beta Communicator) 2EF71 - Neutral Area Room 16-2 ("Don't be hasty" guy) 2EF72 - Neutral Area Room 17-1 (Interrogation Room) 2EF73 - Neutral Area Room 17-2 (Joe's Location) 2EF74 - Neutral Area Room 18-1 (Fake Gun) 2EF75 - Neutral Area Room 18-2 (Machinegun) 2EF76 - Neutral Area Room 19-1 (4x Bullets) 2EF77 - Neutral Area Room 19-2 (Suicide Bomber) 2EF78 - ? Com. Room (1) 2EF79 - ? Com. Room (2) 2EF7A - Area 1 (Interior) 2EF7B - Area 2 (Interior) 2EF7C - Area 3 (Interior) 2EF7D - Area 5 (Section 2) 2EF7E - Area 5 (Section 3) 2EF7F - Area 6 (Section 2) 2EF80 - Area 8 (Cannon Passage 2) 2EF81 - Area 8 (Cannon Passage 3) 2EF82 - Area 8 (Cannon Passage 4) 2EF83 - Area 8 (Section 2) 2EF84 - Area 8 (Section 3 - Spikes) 2EF85 - Area 8 (Elevator Passage 1) 2EF86 - Area 8 (Elevator Passage 2) 2EF87 - ? Empty Boss Room 2EF88 - ? Empty Boss Room (2) 2EF89 - ? Com. Room (3) 2EF8A - ? Com. Room (4) 2EF8B - Area 12 Power Source Room 1 2EF8C - Area 12 Power Source Room 2 2EF8D - Empty Power Source Room 2EF8E - Empty Power Source Room (2) 2EF8F - Empty Power Source Room (3) 2EF90 - Empty Power Source Room (4) 2EF91 - Area 12 (Electric Floor 1) 2EF92 - Area 12 (Electric Floor 2) 2EF93 - Area 12 (Helicopter Room) 2EF94 - Area 12 (Escape Passage) 2EF95 - Area 12 (Ending) 2EF96 - Area 12 (Revival Device) 2EF97 - Area 12B 2EF98 - Area 12 (The Albatros) 2EF99 - Intro Scene 2 2EF9A - Intro Scene 1 2EF9B - Intro Scene 3 2EF9C - Ending Scene 1 2EF9D - Ending Scene 2 2EF9E - Credits Scene 2EF9F - Communicator Screen 2EFA0 - Ending Scene 3 2EFA1 - Unused Room? 2EFA2 - Unused Room? 2EFA3-2F000 - ??? 2EFA3 - More ASM Conversation Pointers 2F004 - $14 - Area 1 Exterior Communicate 2F005 - $18 - Area 1 Exterior Wire Tap 2F006 - $1F - Area 1 Exterior Wire Tap, Part 2 2F007 - $1C - Area 1 Interior C 2F008 - $1E - Area 1 Interior W 2F009 - $20 - Area 1 Interior W2 2F00A - $50 - Area 2 C 2F00B - $52 - Area 2 W 2F00C - $54 - Area 2 W2 2F00D - $2A - Area 4 C 2F00E - $2C - Area 4 W 2F00F - $2E - Area 4 W2 2F010 - $3A - Area 5 Lower C 2F011 - $3C - Area 5 Lower W 2F012 - $00 - Area 5 Lower W2 2F013 - $3E - Area 5 Upper C 2F014 - $40 - Area 5 Upper W 2F015 - $42 - Area 5 Upper W2 2F016 - $00 - \ 2F017 - $00 - > Not used removed from Top Secret? 2F018 - $00 - / 2F019 - $88 - Area 9 C 2F01A - $8A - Area 9 W 2F01B - $00 - Area 9 W2 2F01C - $B0 - Area 10 C 2F01D - $B2 - Area 10 W 2F01E - $B4 - Area 10 W2 2F01F - $B6 - Area 11 C 2F020 - $B8 - Area 11 W 2F021 - $F0 - Area 11 W2 2F022 - $68 - Area 3 C 2F023 - $6A - Area 3 W 2F024 - $6C - Area 3 W2 2F025 - $7A - Area 8 C 2F026 - $7C - Area 8 W 2F027 - $00 - Area 8 W2 2F028 - $7E - Area 8 Spikes C 2F029 - $80 - Area 8 Spikes W 2F02A - $82 - Area 8 Spikes W2 2F02B - $BC - Area 12 First C 2F02C - $BE - Area 12 First W 2F02D - $C0 - Area 12 First W2 2F02E - $C2 - Area 12 Second C 2F02F - $C4 - Area 12 Second W 2F030 - $C6 - Area 12 Second W2 2F031-2F1A8 - ??? Effects Item selection Screen Menu Object Layouts Each object is 8 bytes. There are four 2-byte entries. The two bytes are: Tile Byte starting at $24652 and effect byte. Tile : 1 3 Layout: 2 4 2F1A9 - Pendant 2F1B1 - Helmet 2F1B9 - Bulletproof Vest 2F1C1 - Rad's Rifle 2F1C9 - Rocket Launcher 2F1D1 - Wide Cannon 2F1D9 - Joe's Machine Gun 2F1E1 - Three Way Gun 2F1E9 - Unknown 2F1F1 - Flare Bombs 2F1F9 - Medicine 2F201 - Permit 2F209 - Iron Boots 2F211 - Rapid Fire 2F219 - Alpha Communicator 2F221 - Beta Communicator 2F229 - Gamma Communicator 2F231 - Delta Communicator 2F239-2F2DB - ??? 2F2DC-2F4B0 - The selection map tiles 2F500-2F800 - ??? Text CHR data. 2F810-2F817 - Space 2F818-2F81F - F ... 2FA10-2FA17 - Hyphen 2FC08-2FC0F - End of data 2FC10-2FC20 - Effects Enemy gravity? 2FC50-2FCB3 - Effects Ego Gravity? 2FCC0-3000F - ???

Bank C (30010-3400F)

30010-3400F - Bank with Music Replay Code 30400 - $15 - Sound processing? $FF - No Sound. $14 - Weird Sound. 33067-3306D - Arm connect sound data 33C2A - $3E - Odd Effect: $19, Enemies never die! Odd Effect: $10, Enemies freeze when shot. Odd Effect: $24, Enemies turn into shielded soldiers when shot.

Bank D (34010-3800F)

Code block for subgame. 34010 - ASM 341CA - $C6 - Change to $A5 for infinite lives in combat mode 35148 - $CE - Change to $AD to not take damage in combat mode 3554B - $A5 - Odd Effect: $00, Only normal soldiers in combat mode 35584 - $F0 - Odd Effect: $00, No normal soldiers in combat mode When looking for sounds look for the pattern (20 54 D7 or 4C 54 D7) 35B1D - $1F - Enemy Rocket Launcher sound pointer 362CB - $40 - Speak To Boss Dialouge sound pointer 362D6 - $07 - Boss Music Area Map code 36411 - $20 - Effects Selection Map sprites 36650 - $03 - Effects Helecopter animation ? 36467 - $0B - Area selection map sound pointer 36688 - $32 - Meet With Enemy sound pointer 36B0C - $3C - Pause sound pointer Collision code 36E82 - $CE - (CE = ASM DEC Abs) Spike Damage Note: Spikes only do 2 damage. the 3rd damage comes from a collision with them. 36E85 - $CE - (CE = ASM DEC Abs) Spike Damage (EE EE - +1 HP) (EE AD - +0 HP) (EE CE - -1 HP) (AD CE - -2 HP) (CE CE - -3 HP) 37547 - $01 - The X speed in which you get knocked back when injured 3754C - $15 - Player Injured sound pointer 376A5 - $16 - Player Dies sound pointer 375C0 - $01 - The X speed in which you fly when bouncing on an enemy's head 37788 - $00 - Odd Effect ($00) When you die the tiles change, and you come back in the same spot. 3778D - $C6 - Change to $EA for infinite lives in normal game 3793B - $F8 - Change to $FA for autofire 37959 - $0A - Effects gun shooting. Change to $00 to allow for 3 bullets at once. 37AC7 - $37 - Medicine sound pointer 37D84 - $10 - Normal Gun Shoot sound pointer 37D89 - $01 - Normal Gun Damage 37DAB - $18 - Bullet Hits Wall sound pointer 37DC5 - $03 - Rocket Launcher Damage 37DD2 - $11 - Rocket Launcher sound pointer 37E00 - $01 - Wide/Machine/3-Way Damage 37E0A - $11 - Wide/Machine/3-Way sound pointer

Bank E (38010-3C00F)

38010: LDX #$06 38012: LDA #$0D 38014: STA $66 38016: LDA $0536,X 38019: BEQ $1C 3801B: STX $3D 3801D: LDA $06A6,X 38020: AND #$04 38022: BNE $03 38024: JSR $D6DF 38027: JSR $D71B 3802A: JSR $8030 3802D: JSR $D79F 38030: CPX *$08 38032: BCS $03 38034: JSR $D6D6 38037: INX 38038: DEC $66 3803A: BNE $DA 3803C: RTS 3803D-38161 - Data? Enemy death code? 38162: CPX $89EA 38165: LDX #$38 38167: LDA $4C 38169: SBC #$0C 3816B: CMP #$2B 3816D: BCC $19 3816F: LDA #$01 38171: STA $0536,X 38174: LDA #$5D 38176: STA $0549,X 38179: LDA #$00 3817B: STA $06A6,X 3817E: STA $0647,X 38181: STA $065A,X 38184: STA $066D,X 38187: RTS 3816C - Odd Effect: $10, Enemies become etheral when killed. 38174 - Odd Effect: $0A, Dead enemies follow you around. 38174 - Odd Effect: $05, Enemies change into weird things when killed. 38188-381BB - Data? 381BC: CLC 381BD: JSR $D6EB 381C0: JSR $D75A 381C3: LDA #$00 ; Length of time a soldier takes to die? 381C5: STA $06CD,X 381C8: JSR $D6CD 381CB: BEQ $30 381CD: LDA #$00 381CF: LDY $0706,Y 381D2: BMI $29 381D4: JSR $D6F1 381D7: LDA $06A6,X 381DA: AND #$EF 381DC: STA $06A6,X 381DF: LDA $0779,X 381E2: BMI $1A 381E4: LDA #$01 381E6: STA $0536,X 381E9: STA $0647,X 381EC: JSR $D6FD 381EF: STA $0620,X 381F2: STA $0633,X 381F5: LDA #$00 381F7: STA $065A,X 381FA: STA $066D,X 381FD: RTS Soldier death 381FE: LDA #$02 38200: STA $065A,X 38203: LDA #$00 38205: STA $066D,X 38208: LDY #$1A ; Enemy Soldier Death sound pointer 3820A: JMP $D754 ; Play Soldier Death sound 3820D-38216 - Data? 38217: LDY #$E9 38219: LDA #$85 3821B: JSR $D6C7 3821E: LDA #$3F 38220: STA $0680,X 38223: INC $066D,X 38226: RTS 38227: DEC $0680,X 3822A: BNE $10 3822C: LDA #$01 3822E: STA $0536,X 38231: STA $0647,X 38234: LDA #$00 38236: STA $065A,X 38239: STA $066D,X 3823C: RTS 3823D-38246 - Data? 38247: LDY #$D2 38249: LDA #$8A 3824B: JSR $D6C7 3824E: LDA #$10 38250: STA $0680,X 38253: INC $066D,X 38256: LDA $06A6,X 38259: AND #$EF 3825B: STA $06A6,X 3825E: LDY #$1C 38260: JMP $D754 38263: JSR $D6C4 38266: DEC $0680,X 38269: BNE $03 3826B: JMP $D6CA 3826E: RTS 3826F-38DC0 - Data? 38DC1: BEQ $03 38DC3: JSR $D6F7 38DC6: JSR $EC1B 38DC9: JSR $EF65 38DCC: JMP $F2A7 38DCF: BEQ $10 38DD1: STA $26 38DD3: JSR $D709 38DD6: BNE $16 38DD8: LDA #$01 38DDA: STA $0536,Y 38DDD: LDA $26 38DDF: STA $0549,Y 38DE2: LDA $0633,X 38DE5: STA $0620,Y 38DE8: STA $0633,Y 38DEB: JSR $D745 38DEE: RTS 38DEF: STA $26 38DF1: TYA 38DF2: LDY #$06 38DF4: JSR $D6EE 38DF7: BEQ $DF 38DF9: RTS Called when a crane is destroyed. 38DFA: STA $26 38DFC: LDA $0536,Y 38DFF: BEQ $D7 38E01: RTS 38E02: STA $26 38E04: JSR $D700 38E07: BEQ $CF 38E09: RTS 38E0A: STA $0766,X 38E0D: JSR $D715 38E10: BNE $18 38E12: LDA #$81 38E14: STA $0536,Y 38E17: LDA #$1B 38E19: STA $0549,Y 38E1C: LDA $0633,X 38E1F: STA $0633,Y 38E22: LDA #$04 38E24: STA $065A,Y 38E27: JSR $D745 38E2A: RTS 38E2B: STA $26 38E2D: JSR $D709 38E30: BNE $0B 38E32: TYA 38E33: STA $079F,X 38E36: TXA 38E37: STA $079F,Y 38E3A: JMP $8DC8 38E3D: LDA #$00 38E3F: STA $079F,X 38E42: RTS 38E43: LDY $079F,Y 38E46: BEQ $F5 38E48: LDA $079F,Y 38E4B: BEQ $F0 38E4D: JMP $D745 38E50: LDY $079F,Y 38E53: LDA $079F,Y 38E56: BEQ $07 38E58: TYA 38E59: TAX 38E5A: JSR $D6CA 38E5D: LDX $3D 38E5F: RTS 38E60: LDY $079F,Y 38E63: LDA $079F,Y 38E66: BNE $F7 38E68: JMP $D6CA 38E6B: DEC $0753,X 38E6E: BNE $14 38E70: LDA $0693,X 38E73: STA $0753,X 38E76: LDA $0680,X 38E79: JSR $8DC1 38E7C: DEC $066D,X 38E7F: BNE $03 38E81: INC $065A,X 38E84: RTS 38E85: LDA $8E8B,Y 38E88: STA $0680,X 38E8B: LDA $8E8C,Y 38E8E: STA $0693,X 38E91: STA $0753,X 38E94: LDA $8E8D,Y 38E97: STA $066D,X 38E9A: RTS 38E9A-39136 - Haven't looked through this yet. 39137: LDY #$13 ; Load Arm throw sound pointer 39139: JSR $D754 ; Play arm throw sound 3913C: LDA #$00 3913E: STA $06A6,X 39141: STA $06BA,X 39144: LDA #$00 39146: STA $06E0,X 39149: INC $065A,X 3914C: RTS 3914D: LDA $06CD,X 39150: STA $07E6 39153: INC $065A,X 39156: RTS 39157: LDX #$00 39159: JSR $D6C4 3915C: LDX $3D 3915E: LDA $06F3,X 39161: CMP $05F8 39164: BNE $0D 39166: LDA #$01 39168: STA $0536,X 3916B: INC $0647,X 3916E: LDA #$00 39170: STA $065A,X 39173: RTS 39174-391B4 - Code and data. 391B5: STA $064C 391B8: LDY #$12 ; Load arm grip sound pointer 391BA: JSR $D754 ; Play arm grip sound 391BD: LDA #$01 391BF: STA $060C 391C2: LDA #$F7 391C4: STA $06AB 391C7: LDA $0625 391CA: LSR A 391CB: TAY 391CC: LDA $91D3,Y 391CF: STA $065A 391D2: LDA #$00 ; Effects when arm grips. 391D4: STA $066D 391D7: RTS 391D8: LDY #$19 ; Load arm fail sound pointer 391DA: JSR $D754 ; load arm fail sound 391DD: LDA #$01 391DF: STA $065A,X 391E2: RTS 391E3-391FE - Data? 391FF: JSR $D6DF 39202: CLC 39203: LDA $05E4,X 39206: ADC $C8 39208: STA $05E4,X 3920B: CLC 3920C: LDA $060C,X 3920F: ADC $CA 39211: STA $060C,X 39214: JMP $92A0 39217: LDA $064C 3921A: CMP #$02 3921C: BCS $2C 3921E: SEC 3921F: LDA $056F 39222: SBC $61 39224: TAY 39225: CLC 39226: ADC $05E9 39229: STA $05E9 3922C: CLC 3922D: TYA 3922E: ADC $0574 39231: STA $0574 39234: SEC 39235: LDA $05A9 39238: SBC $62 3923A: TAY 3923B: CLC 3923C: ADC $0611 3923F: STA $0611 39242: CLC 39243: TYA 39244: ADC $05AE 39247: STA $05AE 3924A: RTS 3924B-39263 - Data? 39263: SEC 39264: LDA $056F,X 39267: SBC $05E4,X 3926A: BPL $03 3926C: JSR $93FF 3926F: CMP #$3A 39271: BCC $05 39273: LDA #$01 39275: STA $065A,X 39278: RTS 39279: SEC 3927A: LDA $056F,X 3927D: SBC $05E4,X 39280: BPL $03 39282: JSR $93FF 39285: CMP #$30 39287: BCC $05 39289: LDA #$01 3928B: STA $065A,X 3928E: RTS 3928F: SEC 39290: LDA $05A9,X 39293: SBC $060C,X 39296: BPL $03 39298: JSR $93FF 3929B: CMP #$40 3929D: BCC $05 3929F: LDA #$01 392A1: STA $065A,X 392A4: RTS 392A5: LDA $0620,X 392A8: CLC 392A9: ADC #$08 392AB: AND #$0F 392AD: JMP $D6E8 392B0: JSR $93B7 392B3: STA $06BA,X 392B6: LDY $3A 392B8: TYA 392B9: STA $078C,X 392BC: SEC 392BD: LDA $056F,X 392C0: SBC #$04 392C2: STA $0203,Y 392C5: STA $17 392C7: SEC 392C8: LDA $05A9,X 392CB: SBC #$04 392CD: STA $0200,Y 392D0: STA $18 392D2: TXA 392D3: PHA 392D4: LDA $0620,X 392D7: TAX 392D8: LDA $9320,X 392DB: STA $0201,Y 392DE: LDA $9329,X 392E1: STA $0202,Y 392E4: JSR $D76C 392E7: LDA $19 392E9: BEQ $29 392EB: CLC 392EC: LDA $17 392EE: ADC $930E,X 392F1: STA $17 392F3: STA $0203,Y 392F6: CLC 392F7: LDA $18 392F9: ADC $9317,X 392FC: STA $18 392FE: STA $0200,Y 39301: LDA $9332,X 39304: STA $0201,Y 39307: LDA $9329,X 3930A: STA $0202,Y 3930D: JSR $D76C 39310: DEC $19 39312: BNE $D7 39314: STY $3A 39316: PLA 39317: TAX 39318: RTS 39319-39344 - Data? 39345: STY $82 39347: STY $83 39349: STA $81 3934B: PHA 3934C: LDY $3A 3934E: SEC 3934F: LDA $056F,X 39352: SBC #$04 39354: STA $0203,Y 39357: STA $17 39359: SEC 3935A: LDA $05A9,X 3935D: SBC #$04 3935F: STA $0200,Y 39362: STA $18 39364: PLA 39365: TAX 39366: LDA $9399,X 39369: STA $0201,Y 3936C: LDA $939B,X 3936F: STA $0202,Y 39372: JSR $D76C 39375: LDA $19 39377: BEQ $2B 39379: BMI $29 3937B: CLC 3937C: LDA $17 3937E: ADC $939C,X 39381: STA $17 39383: STA $0203,Y 39386: CLC 39387: LDA $18 39389: ADC $939D,X 3938C: STA $18 3938E: STA $0200,Y 39391: LDA $939A,X 39394: STA $0201,Y 39397: LDA $939B,X 3939A: STA $0202,Y 3939D: JSR $D76C 393A0: DEC $19 393A2: BNE $D7 393A4: STY $3A 393A6: LDX $3D 393A8: RTS 393A9-393DE - Data? 393DF: SEC 393E0: LDA $056F,X 393E3: SBC $05E4,X 393E6: BPL $03 393E8: JSR $93FF 393EB: LSR A 393EC: LSR A 393ED: LSR A 393EE: CMP #$07 393F0: BCC $02 393F2: LDA #$07 393F4: STA $19 393F6: RTS 393F7: SEC 393F8: LDA $05A9,X 393FB: SBC $060C,X 393FE: BPL $03 39400: JSR $93FF 39403: LSR A 39404: LSR A 39405: LSR A 39406: CMP #$07 39408: BCC $02 3940A: LDA #$07 3940C: STA $19 3940E: RTS 3940F: EOR #$FF 39411: CLC 39412: ADC #$01 39414: RTS 39415: CLC 39416: LDA $05E4,X 39419: ADC $C8 3941B: STA $05E4,X 3941E: LDA $05D0,X 39421: ADC $C7 39423: STA $05D0,X 39426: CLC 39427: LDA $060C,X 3942A: ADC $CA 3942C: STA $060C,X 3942F: LDA $05F8,X 39432: ADC $C9 39434: STA $05F8,X 39437: RTS 39438-3944E - Data? 3944F: STY $5B,Y 39451: STY $72,Y 39453: STY $38,Y 39455: LDA $05A9,X 39458: SBC #$06 3945A: STA $05A9,X 3945D: JSR $9474 39460: LDA $06BA,X 39463: CMP #$10 39465: BCC $03 39467: INC $065A,X 3946A: RTS 3946B: CLC 3946C: LDA $05A9,X 3946F: ADC #$06 39471: STA $05A9,X 39474: JSR $9474 39477: LDA $06BA,X 3947A: CMP #$02 3947C: BCS $03 3947E: JMP $D6CA 39481: RTS 39482-39483 - Data? 39484: JSR $9486 39487: STA $06BA,X 3948A: LDA $06A6,X 3948D: AND #$02 3948F: BEQ $F2 39491: LDA #$00 39493: JMP $933B 39496: SEC 39497: LDA $060C,X 3949A: SBC $05A9,X 3949D: BCS $02 3949F: LDA #$00 394A1: LSR A 394A2: LSR A 394A3: LSR A 394A4: STA $19 394A6: RTS 394A7-394B5 - Data? 394B6: STA $06E0,X 394B9: INC $0647,X 394BC: RTS 394BD-3951A - Data? 3951B: ORA $47BD,Y 3951E: ASL $20 39520: LDY #$D6 ; Load graphic pointer 39522: ASL $95,X 39524: JSR $A095 39527: ROL $8CA9,X 3952A: JSR $D6C7 ; Load graphic 3952D: INC $0647,X 39530: LDA $063E 39533: STA $0633,X 39536: ASL A 39537: TAY 39538: CLC 39539: LDA $9555,Y 3953C: ADC $057A 3953F: STA $056F,X 39542: LDA $9556,Y 39545: ADC $0567 39548: STA $055C,X 3954B: CLC 3954C: LDA $05B4 3954F: ADC #$FC 39551: STA $05A9,X 39554: JSR $EF65 39557: JSR $D6D6 3955A: LDA $0665 3955D: CMP #$03 3955F: BEQ $03 39561: JMP $D6CA 39564: RTS 39565-39574 - Data? 39575: LDA #$0D 39577: STA $0766,X 3957A: LDA #$00 3957C: STA $0753,X 3957F: INC $0647,X 39582: RTS 39583: LDA $065A,X 39586: JSR $9594 39589: JSR $D6C4 3958C: JSR $EF7B 3958F: JSR $EB62 39592: JSR $F2AF 39595: JSR $D6D6 39598: LDA $36 3959A: AND #$07 3959C: BNE $05 3959E: LDY #$31 395A0: JSR $D754 395A3: RTS 395A4-395B4 - Data? 395BA: STA $0633,X 395BD: LDY #$01 ; load graphic pointer 395BF: LDA #$93 395C1: JSR $D6C7 ; load graphic 395C4: LDA #$5E 395C6: STA $0680,X 395C9: LDA #$07 395CB: STA $06E0,X 395CE: INC $065A,X 395D1: RTS 395D2: LDA $36 395D4: AND #$0F 395D6: BNE $08 395D8: JSR $D6F4 395DB: AND #$0F 395DD: STA $0620,X 395E0: JSR $D6E5 395E3: DEC $0680,X 395E6: BNE $14 395E8: LDA #$03 395EA: STA $06E0,X 395ED: JSR $D72D 395F0: STA $0620,X 395F3: JSR $D77E 395F6: STA $0633,X 395F9: INC $065A,X 395FC: RTS 395FD: JSR $D6E5 39600: LDA #$48 39602: CMP $05A9,X 39605: BCS $0F 39607: LDY #$5F ; load graphic pointer 39609: LDA #$93 3960B: JSR $D6C7 ; load graphic 3960E: LDA #$3F 39610: STA $0680,X 39613: INC $065A,X 39616: RTS 39617: DEC $0680,X 3961A: BNE $1D 3961C: JSR $D6FD 3961F: STA $0633,X 39622: STA $0620,X 39625: LDA #$34 39627: JSR $8E1B 3962A: INC $065A,X 3962D: LDY #$2A 3962F: LDA #$96 39631: JSR $D6FA 39634: LDA #$9D 39636: STA $0680,X 39639: RTS 3963A-3963E - Data? 3963F: JSR $D6F7 39642: JSR $8E33 39645: DEC $0680,X 39648: BNE $1F 3964A: LDA $079F,X 3964D: TAX 3964E: BEQ $03 39650: JSR $D6CA 39653: LDX $3D 39655: LDY #$01 ; load graphic pointer 39657: LDA #$93 39659: JSR $D6C7 ; Load graphic 3965C: LDA #$0C 3965E: STA $0620,X 39661: LDA #$03 39663: STA $06E0,X 39666: INC $065A,X 39669: RTS 3966A-3966D - Data? 3966E: JSR $D6E5 39671: LDA $05A9,X 39674: CMP #$30 39676: BCS $05 39678: LDA #$00 3967A: STA $065A,X 3967D: RTS 3967E: JSR $8E40 39681: LDY #$89 39683: LDA #$96 39685: JSR $D6FA 39688: JSR $D6FD 3968B: EOR #$01 3968D: STA $0620,X 39690: LDA #$28 39692: STA $0680,X 39695: INC $065A,X 39698: RTS 39699-396A2 - Data? 396A3: ASL $D0 396A5: ASL A 396A6: LDA #$01 396A8: STA $0536,X 396AB: LDA #$00 396AD: STA $065A,X 396B0: RTS 396B1-3970A - Data? 3970B: INC $0647,X 3970E: LDY #$43 ; load graphic pointer 39710: LDA #$8C 39712: JMP $D6C7 ; load graphic 39715: JSR $F04F 39718: BCS $3E 3971A: LDA $053B 3971D: BEQ $05 3971F: LDA $06AB 39722: BMI $34 39724: LDA #$01 39726: STA $07E2 39729: LDA #$08 3972B: BIT $FA 3972D: BEQ $0D 3972F: LDA #$00 39731: JSR $D79C 39734: BNE $06 39736: DEC $05A9,X 39739: JSR $9749 3973C: LDA #$04 3973E: BIT $FA 39740: BEQ $0D 39742: LDA #$01 39744: JSR $D79C 39747: BNE $06 39749: INC $05A9,X 3974C: JSR $9749 3974F: SEC 39750: LDA $05A9,X 39753: SBC #$16 39755: STA $05A9 39758: RTS 39759: LDA $36 3975B: AND #$03 3975D: BNE $F9 3975F: LDY #$29 39761: JMP $D754 39764: LDA $0647,X 39767: JSR $D6A0 3976A: RTS 3976B-397BE - Data? Spider Code 397BF: JSR $D6F4 397C2: AND #$03 397C4: TAY 397C5: LDA $97DE,Y 397C8: STA $0680,X 397CB: JSR $D72D 397CE: STA $0620,X 397D1: JSR $D6F4 397D4: AND #$03 ; Effects spider's directions 397D6: TAY 397D7: LDA $97E2,Y 397DA: CLC 397DB: ADC $0620,X 397DE: AND #$0F ; Effects spider's directions 397E0: STA $0620,X 397E3: LDY #$36 ; load spider graphic pointer 397E5: LDA #$89 397E7: JSR $D6C7 ; load spider graphic 397EA: INC $065A,X 397ED: RTS 397EE-397F5 - Data? 397F6: JSR $D6C4 397F9: JSR $D6E5 397FC: DEC $0680,X 397FF: BNE $08 39801: LDA #$BD 39803: STA $0680,X 39806: INC $065A,X 39809: RTS 3980A: DEC $0680,X 3980D: BNE $05 3980F: LDA #$00 39811: STA $065A,X 39814: RTS 39815-39828 - Data? Spider Injured Code 39829: EOR ($98),Y 3982B: LDY #$84 ; load spider injured graphic pointer 3982D: LDA #$89 3982F: JSR $D6C7 ; load spider injured graphic 39832: LDY #$A8 39834: LDA #$81 ; ??? 39836: JSR $D6FA 39839: LDA #$14 ; How long the spider fall when injured. 3983B: STA $0680,X 3983E: INC $066D,X 39841: RTS 39842: JSR $D6EB 39845: DEC $0680,X 39848: BNE $0D 3984A: LDY $0779,Y 3984D: BMI $09 3984F: LDA #$1F 39851: STA $0680,X 39854: INC $066D,X 39857: RTS 39858: INC $065A,X 3985B: LDA #$00 3985D: STA $066D,X 39860: RTS 39861: DEC $0680,X 39864: BNE $15 39866: LDA $06A6,X 39869: AND #$EF 3986B: STA $06A6,X 3986E: LDA #$00 39870: STA $065A,X 39873: LDA #$01 39875: STA $0536,X 39878: STA $0647,X 3987B: RTS 3987C: LDA $0647,X 3987F: JSR $D6A0 39882: ROR $98,X 39884: STY $98 39886: LDA #$04 39888: STA $0779,X 3988B: LDA #$07 3988D: STA $0766,X 39890: INC $0647,X 39893: RTS 39894-398A0 - Data? Man-Eating Plant Starting Code 398A1: STA $993F,Y 398A4: EOR $99,X 398A6: ROR $99 398A8: LDA $06A6,X 398AB: AND #$F7 398AD: STA $06A6,X 398B0: LDA #$04 398B2: JSR $D712 398B5: BCS $1B 398B7: LDA #$34 ; How close you have to be before the plant comes up. 398B9: JSR $D70F 398BC: BCS $14 398BE: LDY #$AC ; Plant start graphic pointer 398C0: LDA #$89 398C2: JSR $D6C7 ; Load graphic 398C5: LDY #$26 ; Load plant start sound effect 398C7: JSR $D754 ; Play the sound. 398CA: LDA #$3F 398CC: STA $0680,X 398CF: INC $065A,X 398D2: RTS ; Return Man-Eating Plant Opening Code 398D3: JSR $D6C4 398D6: DEC $0680,X 398D9: BNE $17 398DB: LDY #$27 ; Load plant attack sound effect 398DD: JSR $D754 ; Play the sound. 398E0: LDY #$F2 ; Plant Attack graphic pointer 398E2: LDA #$89 398E4: JSR $D6C7 ; Load plant attack graphic 398E7: LDA #$3F 398E9: STA $0680,X 398EC: JSR $997B 398EF: INC $065A,X 398F2: RTS 398F3: LDA $05F8,X 398F6: CMP #$4C 398F8: BNE $08 398FA: INC $065A,X 398FD: LDA #$3F 398FF: STA $0680,X 39902: JSR $F04A 39905: BCS $28 39907: JSR $D799 3990A: LDA #$06 3990C: STA $065A,X 3990F: LDA #$10 39911: STA $07E6 39914: LDA #$81 39916: STA $0536 39919: LDA #$12 3991B: STA $065A 3991E: LDA $05A9,X 39921: STA $05A9 39924: LDA $056F,X 39927: STA $056F 3992A: LDA #$1F 3992C: STA $0680,X 3992F: JMP $D6C4 39932: DEC $0680,X 39935: BNE $0F 39937: LDY #$7A ; Load graphic pointer 39939: LDA #$8A 3993B: JSR $D6C7 ; Load graphic 3993E: LDA #$3F 39940: STA $0680,X 39943: INC $065A,X 39946: JSR $EF65 39949: JSR $EC1B 3994C: JMP $F2A7 3994F: JSR $D6C4 39952: LDA $05F8,X 39955: CMP #$00 39957: BNE $0B 39959: LDA #$3F 3995B: STA $0680,X 3995E: INC $065A,X 39961: JSR $997B 39964: RTS 39965: JSR $D6C4 39968: DEC $0680,X 3996B: BNE $08 3996D: LDA #$00 3996F: STA $065A,X 39972: STA $066D,X 39975: RTS 39976: DEC $0680,X 39979: BNE $0D 3997B: LDA #$02 3997D: STA $0647 39980: LDA #$00 39982: STA $065A 39985: JMP $D6CA 39988: JMP $D6C4 3998B: LDA #$02 3998D: STA $19 3998F: JSR $D709 39992: BNE $1E 39994: LDA $19 39996: STA $0680,Y 39999: TAX 3999A: LDA $99A7,X 3999D: STA $0620,Y 399A0: STA $0633,Y 399A3: LDX $3D 399A5: LDA #$01 399A7: STA $0536,Y 399AA: LDA #$18 399AC: STA $0549,Y 399AF: JSR $D745 399B2: DEC $19 399B4: BPL $D9 399B6: RTS 399B7-39B5E - Haven't looked. 39ABE - $24 - Electric Barrier sound pointer Elevator Breaking Code 39B5F: JSR $F04F 39B62: BCS $12 39B64: JSR $9B7C 39B67: LDA #$04 39B69: JSR $D70F 39B6C: BCS $08 39B6E: LDY #$39 ; Load sound for elevator breaking. 39B70: JSR $D754 ; Play sound. 39B73: INC $065A,X ; Effect falling elevators 39B76: RTS 39B77: JSR $D6EB 39B7A: JSR $F04F 39B7D: BCS $0A 39B7F: LDA #$01 39B81: JSR $D79C 39B84: BNE $03 39B86: JSR $9B7C 39B89: JMP $D703 39B8C: LDA $053B 39B8F: BEQ $05 39B91: LDA $06AB 39B94: BMI $0C 39B96: INC $07E2 39B99: SEC 39B9A: LDA $05A9,X 39B9D: SBC #$14 39B9F: STA $05A9 39BA2: RTS 39BA3-39BAE - Data? 39BAF: LDA #$10 39BB1: STA $0766,X 39BB4: LDY #$76 ; load graphic pointer 39BB6: LDA #$8E 39BB8: JSR $D6C7 ; load graphic 39BBB: LDA #$04 39BBD: STA $06BA,X 39BC0: LDA #$09 39BC2: STA $0779,X 39BC5: LDY #$00 39BC7: LDA $0549,X 39BCA: CMP #$1A 39BCC: BEQ $01 39BCE: INY 39BCF: TYA 39BD0: STA $0633,X 39BD3: STA $0620,X 39BD6: LDA #$BD 39BD8: STA $0693,X 39BDB: INC $0647,X 39BDE: RTS 39BDF-39BE8 - UData? 39BE9: JSR $D787 39BEC: BCS $F0 39BEE: LDA $065A,X 39BF1: JSR $9C1E 39BF4: JSR $D6C4 39BF7: JSR $EB62 39BFA: JSR $EF65 39BFD: JSR $F2A7 39C00: JSR $8E33 39C03: LDA $06A6,X 39C06: AND #$02 39C08: BEQ $D4 39C0A: DEC $0693,X 39C0D: BNE $CF 39C0F: LDY $079F,Y 39C12: BEQ $05 39C14: LDA $079F,Y 39C17: BNE $0D 39C19: LDA #$50 39C1B: JSR $D712 39C1E: BCS $05 39C20: LDA #$37 39C22: JSR $8E1B 39C25: RTS 39C26: LDA #$BD 39C28: STA $0693,X 39C2B: JMP $8E40 39C2E-39C3A - Data? 39C3B: INC $065A,X 39C3E: LDY #$CF 39C40: LDA #$9B 39C42: JMP $D6FA 39C45: LDA #$10 39C47: JSR $D712 39C4A: BCS $03 39C4C: INC $065A,X 39C4F: LDA #$07 39C51: JMP $9C6A 39C54: INC $065A,X 39C57: LDY #$D4 39C59: LDA #$9B 39C5B: JMP $D6FA 39C5E: LDA #$10 39C60: JSR $D712 39C63: BCC $05 39C65: LDA #$00 39C67: STA $065A,X 39C6A: LDA #$03 39C6C: JMP $9C6A 39C6F: DEC $0680,X 39C72: BNE $05 39C74: LDA #$01 39C76: STA $065A,X 39C79: RTS Crane moving code 39C7A: AND $36 39C7C: BNE $0C 39C7E: LDA $06A6,X 39C81: AND #$02 39C83: BEQ $05 39C85: LDY #$3A ; Load crane moving sound pointer 39C87: JSR $D754 ; Play sound 39C8A: JSR $D6F7 39C8D: JSR $D75A 39C90: BNE $05 39C92: JSR $D77B 39C95: BNE $12 39C97: LDA $0620,X 39C9A: EOR #$01 39C9C: STA $0620,X 39C9F: LDA #$04 39CA1: STA $065A,X 39CA4: LDA #$28 39CA6: STA $0680,X 39CA9: RTS 39CAA: LDA $065A,X 39CAD: JSR $D6A0 39CB0: LDY $9C 39CB2: CMP ($9C,X) 39CB4: LDY #$1B ; Load crane exploding sound pointer 39CB6: JSR $D754 ; play sound 39CB9: JSR $8E40 39CBC: LDA #$0F 39CBE: JSR $8DFA 39CC1: LDY #$8E ; Load Crane explode Graphic pointer 39CC3: LDA #$97 39CC5: JSR $D6C7 ; Load crane explode graphic 39CC8: LDA #$0F 39CCA: STA $0680,X 39CCD: INC $065A,X 39CD0: RTS Slime 39E6C: LDY #$6A ; Load graphic pointer 39E6E: LDA #$8F 39E70: JSR $D6C7 ; Load graphic 39E73: JMP $820E 39E76: LDA $0647,X 39E79: JSR $9E6F 39E7C: JMP $D6D6 39E7F: JSR $D6A0 39E82: ROR $9E,X 39E84: EOR $9F,X 39E86: LDY #$25 ; Loads Slime sound pointer into memory. 39E88: JSR $D754 ; Plays the sound. 39E8B: LDY #$83 ; Load slime graphic pointer 39E8D: LDA #$8F 39E8F: JSR $D6C7 ; Load slime graphic 39E92: LDA #$06 ; Effects the flow of slime 39E94: STA $06BA,X 39E97: LDA #$00 39E99: STA $0693,X 39E9C: INC $0647,X 39E9F: JSR $D6FD 39EA2: STA $0620,X ; Effects the flow of slime. 39EA5: STA $0633,X ; Loads slime graphic pointer. 39EA8: RTS 39EA9 02 ; The X Speed of slime. 39EAA 00 00 ; The Y Speed of slime. (FF FD (-3) - makes slime "jump") 3A83F - $17 - Door sound pointer Bullet Canister 3B995 - $02 FF - X Speed 3B997 - $FE 00 - Y Speed 3B999 - $20 - Gravity 3B9A6 - $34 - Aquire Bullet sound pointer 3B9A8 - $54 - Odd Effect: $28, Getting a bullet removes all enemies from the game! 3B9AE - $02 - Odd Effect: $00, Bullet canisters don't disappear. 3B9AF - $9D - Odd Effect: $99, Bullet canisters kill you. 3BDF3 - $1E - Effect Main System destruction 3BE74 - $35 - Main System Destruction sound pointer

Bank F (3C010-4000F)

3C412 - $2B - Begin Transmission sound pointer 3C541 - $2F - Change Selection sound pointer Title Screen 3C93A - $06 - ? Effects title screen 3C93B - $20 - ? Effects title screen 3C93C - $68 - ? Effects title screen 3C93D - $8D - ? Effects title screen 3C93E - $06 - ? Effects title screen 3C93F - $20 - ? Effects title screen 3C940 - $60 - ? Effects title screen 3C941 - $33 - Title Image Loading 3C942 - $C9 - Title Image 3C943 - $20 - Top Left block position ? 3C944 - $88 - Top Left block position Starting Info (Loaded after intro conversation, before map is displayed.) 3CA40 - $A5 - ? 3CA41 - $CA - ? 3CA42 - $AD - ? 3CA43 - $CA - ? 3CA44: LDA #$02 ; Load starting lives 3CA46: STA $4A ; Store 3CA48: LDA #$00 ; Load starting hit points 3CA4A: STA $04BE ; Store 3CA4D: LDY #$13 ; Load ? (20) 3CA4F: STA $04FB,Y ; Store 3CA52: DEY ; Decrement index Y 3CA53: BPL $FA ; Branch on result plus 3CA55: JSR $D7BD ; Jump and save return 3CA58: LDA #$FF ; 3CA5A: STA $33 ; Store 255 into $33 3CA5C: LDA #$01 ; Load ? (1) 3CA5E: STA $04CB ; *Store starting weapon 3CA61: STA $04E0 ; *Store starting communicator 3CA65 - Odd Effect: $CB, Beat Area 00! 3CA67 - Odd Effect: $01, Screen doesn't refresh after intro conversation. 3CA6A - Effects loading selection map. Loading information for descending into an area after item selection. 3CA8B - $CA - ? 3CAA9 - $01 - ? 3CAA9 - $01 - ? 3CAC1 - $D7 - ? 3CACD - $CB - Effects area loading after item selection. 3CAD3 - $CA - ? 3CAE2 - $E6 - Effects area loading after item selection. 3D508 - $95 - Effects the way screen redraws. 3E214 - Start of trademark text message. 3E7E7 - $CE - Change to $AD to not take damage from collisions and bullets. 3F18F - $14 - Bullet Canister height. 3F190 - $12 - Bullet Canister width. 3FCCF-3FD40 - Effects bionic arm. 3FCD0 - Odd Effect: $00, No bionic arm. 3FE00-3FEF0 - ? Movement of trucks on map. 3FEF2 - $40 00 - Right X 3FEF4 - $00 00 - Right Y 3FEF6 - $2D 00 - Down Right X 3FEF8 - $2D 00 - Down Right Y 3FEFA - $00 00 - Down X 3FEFC - $40 00 - Down Y 3FEFE - $D3 FF - Down Left X 3FF00 - $2D 00 - Down Left Y 3FF02 - $C0 FF - Left X 3FF04 - $00 00 - Left Y 3FF06 - $D3 FF - Up Left X 3FF08 - $D3 FF - Up Left Y 3FF0A - $00 00 - Up X 3FF0C - $C0 FF - Up Y 3FF0E - $2D 00 - Up Right X 3FF10 - $D3 FF - Up Right Y Gun Bullet X/Y's 3FF12 - $03 00 - (Norm, Rocket) Bullet's X, right 3FF14 - $00 00 - (Norm, Rocket) Bullet's Y, right 3FF16 - $FD FF - (Norm, Rocket) Bullet's X, left 3FF18 - $00 00 - (Norm, Rocket) Bullet's Y, left 3FF5A - $03 00 - (Wide) Top Bullet's X, right 3FF5C - $FD FF - (Wide) Top Bullet's Y, right 3FF5E - $04 00 - (Machine) Top Bullet's X, right 3FF60 - $FF FF - (Machine) Top Bullet's Y, right 3FF62 - $05 00 - (3-way,wide,machine) Mid Bullet's X, right 3FF64 - $00 00 - (3-way,wide,machine) Mid Bullet's Y, right 3FF66 - $04 00 - (Machine) Bottom Bullet's X, right 3FF68 - $01 00 - (Machine) Bottom Bullet's Y, right 3FF6A - $03 00 - (Wide) Bottom Bullet's X, right 3FF6C - $03 00 - (Wide) Bottom Bullet's Y, right 3FF6E - $FD FF - (Wide) Bottom Bullet's X, left 3FF70 - $03 00 - (Wide) Bottom Bullet's Y, left 3FF72 - $FC FF - (Machine) Bottom Bullet's X, left 3FF74 - $01 00 - (Machine) Bottom Bullet's Y, left 3FF76 - $FB FF - (3-way,wide,machine) Mid Bullet's X, left 3FF78 - $00 00 - (3-way,wide,machine) Mid Bullet's Y, left 3FF7A - $FC FF - (Machine) Top Bullet's X, left 3FF7C - $FF FF - (Machine) Top Bullet's Y, left 3FF7E - $FD FF - (Wide) Top Bullet's X, left 3FF80 - $FD FF - (Wide) Top Bullet's Y, left 3FF82 - $00 00 - (3-Way) Top Bullet's X 3FF84 - $FB FF - (3-Way) Top Bullet's Y 3FF86 - $00 00 - (3-Way) Bottom Bullet's X 3FF88 - $05 00 - (3-Way) Bottom Bullet's Y Other things that might be in this area: Flare bomb, POW, Enemy bullets, Blocked bullets, Dwarf Helicopter, End Helicopter, Main System Bullets, Wired Soldier Bullets, Blue Lasers, Red Lasers 3FF89-4000F - ???

3.0 How Data is Stored

This section gives detailed information about how data table are setup in the ROM.


3.1 How Palettes are Handled


3.2 How Maps are Handled

Map Information

Maps are broken up in screen. Area 1's exterior is a good example. It is 5 screens wide and 3 
screens high. This means 15 screens. A screen is 8x8 chunks. A chunk is 4x4 blocks. A block is 4x4 
tiles. A tile is 8x8 pixels.

Area 1 exterior is odd. There is a default screen which starts at $610 and is $40 bytes 
long. (This is the sky.) The rest of the map's screen are at $B50 - $DD0. Each is $40 
long. The map layout looks like this:

+-----+-----+-----+-----+-----+
|81EE |81EF |81F0 |81F1 |81F2 |
| 610 | 610 | 610 | 610 | D50 |
|     |     |     |     |     |
+-----+-----+-----+-----+-----+
|81F5 |81F6 |81F7 |81F8 |81F9 |
| B50 | BD0 | C50 | CD0 | D90 |
|     |     |     |     |     |
+-----+-----+-----+-----+-----+
|81FC |81FD |81FE |81FF |8100 |
| B90 | C10 | C90 | D10 | DD0 |
|     |     |     |     |     |
+-----+-----+-----+-----+-----+

The pointer for the screens starts at 81EE. Each byte is the lookup of the screen.

3.3 How Sprites are Handled



4.0 Data Tables


Alphabet

00

08 3

10 7

18 B

20 V

28 Z

30 .

38 ²

01 F

09 J

11 N

19 R

21 +

29

31

39

02 0

0A 4

12 8

1A C

22 W

2A ,

32 ?

3A ³

03 G

0B K

13 O

1B S

23 #

2B

33

3B

04 1

0C 5

14 9

1C D

24 X

2C '

34 !

3C ´

05 H

0D L

15 P

1D T

25

2D

35

3D

06 2

0E 6

16 A

1E E

26 Y

2E ·

36 ±

3E -

07 I

0F M

17 Q

1F U

27

2F

37

3F

00 - Space, 23 - Bullet, 2A - Comma, 2C - Apostrophe, 2E - Dot, 30 - Period, 36 - Alpha, 38 - Beta, 3A - Gamma, 3C - Beta, 3E - Hyphen
25, 27, 29, 31, 33, 35, 37, 39, 3B, 3D, 3F - Not used


Portraits

0 Empty

8 HQ

1 Mustache

9 Commander

2 Cyborg

A Killt

3 Rad

B Pop 1

4 Joe

C Pop 2

5 Enemy

D Pop 3

6 Ally

E Master D

7 Generic

F Neutral


Guns

CB Rifle

CC Rocket Launcher

CD Wide Cannon

CE Machine Gun

CF Three Way


Communicators

E0 ± Alpha

E1 ² Beta

E2 ³ Gamma

E3 ´ Delta


Enemies

00 - Soldier

01 - Shielded Soldier

02 - Suicide Bomber

03 - Bearded Soldier

04 - ? Strange graphic effect

05 - Remote

06 - Moth

07 - Double Decker Cannon

08 - Enemy Bullet

09 - Thrown Bomb

0A - Explosion

0B - Chain from Double Decker Cannon

0C - Bullet?

0D - Para Soldier

0E - Bullet shooting straight up?

0F - Bullet from Double Decker Cannon?

10 - Copter Soldier

11 - Elevator

12 - ?

13 - Man-Eating Plant

14 - Wired Gunner Explosion

15 - Bionic Arm? Moves and pushes you

16 - Rifle Soldier

17 - Laser Barrier

18 - Plant Shrapnel

19 - Falling Elevator

1A - Crane

1B - Dwarf Soldier

1C - Slime

1D - Remote Soldier?

1E - Slime Trigger (Slow Drop Rate)

1F - Enemy Bullet

20 - Heavy Soldier

21 - Slime Trigger (Fast Drop Rate)

22 - Bullet?

23 - Heavy Object Throwing Soldier

24 - Redball

25 - Heavy Object Throwing Soldier

26 - Horizontal moving platform Wide

27 - Horizontal moving platform medium

28 - Spiked ball

29 - Rifle Soldier From Door

2A - ?

2B - Locked Door

2C - Door Trigger

2D - Door Trigger

2E - ?

2F - Horizontal moving platform Short

30 - Helicopter Bullet

31 - Helicopter

32 - Construction Soldier

33 - Minibot

34 - Laser Barrier's laser?

35 - Barrier

36 - Crane

37 - ? Flicker

38 - Rail Gunner

39 - Landmine

3A - Knife Wielding Soldier

3B - Horizontal moving platform Very short

3C - Wired Soldier

3D - Crane in background?

3E - Invisible trap?

3F - Minibot

40 - Wreckingball on chain

41 - Wreckingball

42 - Bullet of some sort?

43 - Enemy Bullet downward

44 - Invisible barrier, stops bullets only

45 - Unknown object, follows you around (Something to do w/Albatros)

46 - Albatros Fire

47 - Albatros Fire

48 - Game Ending Trigger

49 - Fixed Laser's Laser

4A - Fixed Laser

4B - Laser Cannon Right

4C - Laser Cannon Left

4D - Laser Cannon's Laser

4E - Horizontal moving platform Wide

4F - Indestructable barrier than hurts you

50 - Neutral Zone Guard

51 - Talking NPC 1

52 - Talking NPC 2

53 - Talking NPC 3

54 - Talking NPC 4

55 - Walking NPC 1

56 - Walking NPC 2

57 - Walking NPC 3

58 - Killt and bodyguard

59 - Flashing NPC?

5A - Wired Gunner

5B - Heavy Soldier From Door

5C - Suicide Bomber From Door

5D - Bullet Canister (From enemy?)

5E - Teleporter to Area 12 Elevator Room

5F - Elevator

60 - Communicator Console

61 - Killt at end

62 - Hal

63 - Knife Soldier 100th Opponent

64 - ?

65 - Unknown NPC

66 - CAPTAIN MACK!

67 - Pi Pi Pi

68 - Diagonal bulet

69 - Main System Turret

6A - Main System Bullet

6B - Commander

6C - Horizontal moving platform Short

6D - Horizontal moving platform Short

6E - Main System

6F - Self Destruct Sequence

70 - Albatross Fight Effet Scrolls Screen Palette Shift

71 - Fast Moving Soldier

72 - Bonus Package

73 - 1Up

74 - Medicine

75 - Bullet Canister

76 - POW

77 - Pit Spike Trigger

78 - Pit Spike

79 - ?

7A - Unknown object. Doesn't effect player

7B - ?

7C - Captured Soldier

7D - Comrade NPC doesn't do anything

7E - Destroyer-1

7F - Power Core Laser

80 - Darkness

81 - ?

82 - Flare?

83 - Final Helicoper Turret

84 - Fire Animation Trigger

85 - Error

86 - ?

87 - ?

88 - Main System Explosion

89 - ?

8A - ?

8B - Messes up music and scrolling

8C - Error

8D - Messes up scrolling

8E - ?

8F - ?


Sounds

00 ? Start of Game Music

2C Connect Transmission

58 None

01 Start of Game Music

2D None

59 None

02 Area 5, 6, 10 Music

2E ? Disconnect

5A None

03 Area 1, 3, 4, 7 Music

2F Change Selection

5B None

04 Area 12 Music

30 Select

5C Error

05 Area 2, 9, 11 Music

31 Helicopter

5D None

06 Area 8 Music

32 Meet With Enemy

5E Messed Up

07 Boss Music

33 Alarm

5F None

08 Albatros Music

34 Pickup Bullet Can

60 None

09 Meet W/Enemy Music

35 Destroy Main System

61 None

0A Neutral Zone Music

36 Free Life

62 Messed Up

0B Area Select Music

37 Medicine

63 Error

0C Area Clear Music

38 Bullet Hits Armor

64 None

0D Game Won Music

39 Elevator Breaks

65 None

0E Game Over Music

3A Crane Move

66 None

0F Credits Music

3B Pause

67 None

10 Gun Shoot

3C Pause

68 None

11 Rocket/Wide/3-Way Shoot

3D Level Up (New HP)

69 None

12 Arm Grip

3E Large Explosion

6A None

13 Arm Throw

3F Pause

6B None

14 Arm Fail

40 Boss Dialogue Music

6C None

15 Injured

41 Intro Music Part 1

6D Error

16 Dead

42 Intro Music Part 2

6E None

17 Door

43 Intro Music Part 3

6F Stops Music

18 Bullet Hits Wall

44 Ending Music

70 Error

19 Arm Fail

45 Messed Up

71 Messed Up

1A Enemy Soldier Dies

46 None

72 None

1B Medium Explosion

47 Messed Up

73 Error

1C Moth/Spider Death

48 None

74 Error

1D ? Unknown

49 Error

75 None

1E ? Remote Death

4A None

76 None

1F Enemy Rocket Launcher

4B None

77 Messed Up

20 ? Text

4C None

78 None

21 ? Unknown Blip

4D None

79 None

22 Spike Ball

4E Stops Music

7A None

23 ? Unknown

4F Messed Up

7B None

24 Electric Barrier

50 None

7C None

25 Slime

51 None

7D None

26 Plant Start

52 None

7E Messed Up

27 Plant Attack

53 None

7F Messed Up

28 Moth

54 None

29 ? Unknown Blip

55 None

2A Ceiling Laser

56 Error

2B Connect Transmission

57 Error

* Sounds repeat at $80. 8th bit doesn't seem to have an effect on the sound. (None - No sound, Messed Up - Strange noise, Error - Crashed the Emulator)


5.0 Most Wanted Information

Although much of the information stored in the Bionic Commando ROM has been deciphered, there is still a great deal of information that remains a mystery. There are many things we would like to alter. This is a list of the things we are missing, but would like to know where the information is stored. If you're new to the Bionic Commando hacking scene you can get become a hero for a day by finding where these things are located in the ROM.

Enemy Hit Points
When and which paratroopers fall
Damage of weapons
Prize for each area
Main system HP